// 系统用户相关模型
// @author ishot

package model

import (
	util "admin-go-api/utils"
)

// SysAdmin 用户模型对象
type SysAdmin struct {
	ID         uint       `gorm:"column:id;comment:'主键';primaryKey;NOT NULL" json:"id"`                        //ID 	// 部门id
	Username   string     `gorm:"column:username;type:varchar(64);comment:'用户账号';NOT NULL" json:"username"`    // 用户账号
	Password   string     `gorm:"column:password;type:varchar(64);comment:'密码';NOT NULL" json:"password"`      // 密码
	Nickname   string     `gorm:"column:nickname;type:varchar(64);comment:'昵称'" json:"nickname"`               // 昵称
	Status     int        `gorm:"column:status;default:1;comment:'帐号启用状态:1->启用,2->禁用';NOT NULL" json:"status"` //帐号启用状态:1->启用,2->禁用
	Icon       string     `gorm:"column:icon;type:varchar(500);comment:'头像'" json:"icon"`                      // 头像
	Sex        int        `gorm:"column:sex;default:1;comment:'性别:1->男,2->女';NOT NULL" json:"sex"`             //性别:1->男,2->女
	Email      string     `gorm:"column:email;type:varchar(64);comment:'邮箱'" json:"email"`                     // 邮箱
	Phone      string     `gorm:"column:phone;type:varchar(64);comment:'电话'" json:"phone"`                     //电话
	Note       string     `gorm:"column:note;type:varchar(500);comment:'备注'" json:"note"`                      //备注
	CreateTime util.HTime `gorm:"column:create_time;comment;'创建时间';NOT NULL" json:"createTime"`                //创建时问
}

// TableName 显示指定数据库表名
func (SysAdmin) TableName() string {
	return "sys_admin"
}

// AddSysAdminDto 新增参数
type AddSysAdminDto struct {
	RoleId   uint   `validate:"required" json:"roleId"`   // 角色id
	Username string `validate:"required" json:"username"` // 用户账号
	Password string `validate:"required" json:"password"` // 密码
	Nickname string `validate:"required" json:"nickname"` // 昵称
	Status   int    `validate:"required" json:"status"`   //帐号启用状态:1->启用,2->禁用
	Icon     string `validate:"required" json:"icon"`     // 头像
	Sex      int    `json:"sex"`                          //性别:1->男,2->女
	Email    string `validate:"required" json:"email"`    // 邮箱
	Phone    string `validate:"required" json:"phone"`    //电话
	Note     string `json:"note"`                         //备注
}

// SysAdminInfo 根据id查询用户
type SysAdminInfo struct {
	ID       uint   `json:"ID"`
	Username string `json:"username"` // 用户账号
	Password string `json:"password"` // 密码
	Nickname string `json:"nickname"` // 昵称
	Status   int    `json:"status"`   //帐号启用状态:1->启用,2->禁用
	RoleId   uint   `json:"roleId"`   // 角色id
	Sex      int    `json:"sex"`      //性别:1->男,2->女
	Email    string `json:"email"`    // 邮箱
	Phone    string `json:"phone"`    //电话
	Note     string `json:"note"`     //备注
}

// UpdateAdminDto 修改用户参数
type UpdateAdminDto struct {
	ID       uint   `json:"ID"`                           //ID
	RoleId   uint   `validate:"required"`                 // 角色id
	Username string `validate:"required" json:"username"` // 用户账号
	Password string `validate:"required" json:"password"` // 密码
	Nickname string `validate:"required" json:"nickname"` // 昵称
	Sex      int    `json:"sex"`                          //性别:1->男,2->女
	Email    string `validate:"required" json:"email"`    // 邮箱
	Phone    string `validate:"required" json:"phone"`    //电话
	Note     string `json:"note"`                         //备注
	Status   int    `validate:"required" json:"status"`   //帐号启用状态:1->启用,2->禁用
}

// SysAdminIdDto Id参数
type SysAdminIdDto struct {
	Id uint `json:"id"` // ID
}

// UpdateSysAdminStatusDto 设置状态参数
type UpdateSysAdminStatusDto struct {
	Id     uint //ID
	Status int  // 状态: 1->启用, 2->禁用
}

// ResetSysAdminPasswordDto 重置密码参数对象
type ResetSysAdminPasswordDto struct {
	Id       uint   //Id
	Password string //密码
}

// SysAdminVo 用户列表的vo视图
type SysAdminVo struct {
	ID         uint       `json:"id"`         // ID
	Username   string     `json:"username"`   // 用户名
	Nickname   string     `json:"nickname"`   // 昵称
	Status     int        `json:"status"`     // 状态：1->启用,2->禁用
	RoleId     uint       `json:"roleId" `    // 角色id
	RoleName   string     `json:"roleName"`   // 角色名称
	Icon       string     `json:"icon"`       // 头像
	Sex        int        `json:"sex"`        //性别:1->男,2->女
	Email      string     `json:"email"`      // 邮箱
	Phone      string     `json:"phone"`      // 电话
	Note       string     `json:"note"`       // 备注
	CreateTime util.HTime `json:"createTime"` // 创建时间
}

// JwtAdmin  用户列表的vo视图
type JwtAdmin struct {
	ID         uint   `json:"id"`         // ID
	Username   string `json:"username"`   // 用户名
	Nickname   string `json:"nickname"`   // 昵称
	Status     int    `json:"status"`     // 状态：1->启用,2->禁用
	Icon       string `json:"icon"`       // 头像
	Sex        int    `json:"sex"`        //性别:1->男,2->女
	Email      string `json:"email"`      // 邮箱
	Phone      string `json:"phone"`      // 电话
	Note       string `json:"note"`       // 备注
	ExpireTime int64  `yaml:"expireTime"` //过期时间
}

// LoginDto 登录参数对象
type LoginDto struct {
	Username string `yaml:"username" validate:"required"` //用户账号
	Password string `yaml:"password" validate:"required"` //用户密码
}
